home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / ast_comp / cpp-kit.lha / c++kit / Token.H < prev   
C/C++ Source or Header  |  1993-04-11  |  1KB  |  53 lines

  1. /* 9th April, 1993 Mayan Moudgill
  2.  * Tokens are actually pointers to a (possibly non-null terminated) character
  3.  * string, and its length.
  4.  */
  5.  
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. class Token {
  10.    friend ostream& operator<<(ostream&, const Token&);
  11. private:
  12.    char *   _string;
  13.    int      _length;
  14. public:
  15.             Token()
  16.       : _string(0), _length(0) {};
  17.             Token(char * string, int length)
  18.       : _string(string), _length(length) {};
  19.              Token(char * string, char * afterlast)
  20.       : _string(string), _length(afterlast - string) {};
  21.             Token(char * string)
  22.       : _string(string)
  23.       {
  24.          _length = strlen(string);
  25.       }
  26.    int     operator == ( const Token & t2 ) const
  27.       {
  28.       return _length == t2._length &&
  29.          ( _string == t2._string || bcmp(_string,t2._string,_length) == 0 );
  30.       }
  31.    char *  string() const
  32.       {
  33.      return _string;
  34.       }
  35.    int     length () const
  36.       {
  37.      return _length;
  38.       }
  39.    char     operator[](int idx) const
  40.       {
  41.      return _string[idx];
  42.       }
  43. };
  44.  
  45. inline
  46. ostream& operator<<(ostream& o, const Token& t)
  47. {
  48.    o << t.length() << " <";
  49.    o.write(t._string, t._length);
  50.    o << ">";
  51.    return o;
  52. }
  53.